﻿using System;
using System.Linq;
using System.Windows.Forms;
using OwnZTec.LojaDelivery.Data;

namespace OwnZTec.LojaDelivery.UI.WinForms
{
    public partial class FrmFuncionarios : Form
    {
        #region -- Membros e Construtores -------------------------------------------------------------------------------------------------
        public FrmFuncionarios()
        {
            InitializeComponent();
            this.ConfigurarFormFilho();
        }

        private void FrmFuncionarios_Load(object sender, EventArgs e)
        {
            cmdEditar.Enabled = cmdExcluir.Enabled = false;

            AtualizarGrid();

            Contexto.MainForm.Cursor = Cursors.Arrow;
        }
        #endregion ------------------------------------------------------------------------------------------------------------------------

        #region -- Eventos ----------------------------------------------------------------------------------------------------------------
        private void cmdSair_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void gvFuncionarios_SelectionChanged(object sender, EventArgs e)
        {
            if (gvFuncionarios.SelectedRows.Count == 0)
                cmdEditar.Enabled = cmdExcluir.Enabled = false;
            else if (gvFuncionarios.SelectedRows.Count == 1)
                cmdEditar.Enabled = cmdExcluir.Enabled = true;
            else
            {
                cmdEditar.Enabled = false;
                cmdExcluir.Enabled = true;
            }
        }

        private void cmdAdicionar_Click(object sender, EventArgs e)
        {
            var frm = new FrmFuncionario
            {
                Pai = this
            };
            frm.ShowDialog();
        }

        private void cmdEditar_Click(object sender, EventArgs e)
        {
            var frm = new FrmFuncionario
            {
                Funcionario = (tbFuncionario)gvFuncionarios.SelectedRows[0].DataBoundItem,
                Edicao = true,
                Pai = this
            };

            frm.ShowDialog();
        }

        private void gvFuncionarios_DoubleClick(object sender, EventArgs e)
        {
            if (gvFuncionarios.SelectedRows.Count != 1)
                return;

            var frm = new FrmFuncionario
            {
                Funcionario = (tbFuncionario)gvFuncionarios.SelectedRows[0].DataBoundItem,
                Edicao = true,
                Pai = this
            };

            frm.ShowDialog();
        }

        private void cmdExcluir_Click(object sender, EventArgs e)
        {
            var res = Contexto.MainForm.ExibirMensagem("Deseja excluir o funcionário selecionado?",
                                                       MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (res == DialogResult.No)
                return;

            var idf = ((tbFuncionario)gvFuncionarios.SelectedRows[0].DataBoundItem).idFuncionario;

            Contexto.Db.tbFuncionarios.DeleteObject(Contexto.Db.tbFuncionarios.First(f => f.idFuncionario
                == idf));

            var usr = Contexto.Db.tbUsuarios.FirstOrDefault(u => u.idFuncionario == idf);
            if (usr != null)
                Contexto.Db.tbUsuarios.DeleteObject(usr);

            Contexto.Db.SaveChanges();

            AtualizarGrid();
        }

        private void cmdAtualizar_Click(object sender, EventArgs e)
        {
            AtualizarGrid();
        }
        #endregion ------------------------------------------------------------------------------------------------------------------------

        #region -- Metodos ----------------------------------------------------------------------------------------------------------------
        public void AtualizarGrid()
        {
            Cursor = Cursors.WaitCursor;

            gvFuncionarios.DataSource = Contexto.Db.tbFuncionarios.ToList();

            Cursor = Cursors.Arrow;
        }
        #endregion ------------------------------------------------------------------------------------------------------------------------
    }
}
